package com.wg.dome.repository;

import com.wg.dome.entity.config.InitEquipEntity;
import com.wg.dome.entity.user.EquipEntity;
import com.wg.core.lang.HashTable;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class EquipRepositoryEx extends EquipRepository {
    private final HashMap<Serializable, EquipEntity> packMap;
    private final HashMap<Serializable, EquipEntity> fightMap;

    public EquipRepositoryEx(long playerId) {
        packMap = getAll(playerId, equipEntity -> equipEntity.getPos() == 0);
        fightMap = getAll(playerId, equipEntity -> equipEntity.getPos() > 0);
    }

    /**
     * 从背包查找
     */
    public EquipEntity getEntityFromPack(Serializable entityId) {
        return packMap.get(entityId);
    }

    /**
     * 从出战列表查找
     */
    public EquipEntity getEntityFromFight(Serializable entityId) {
        return fightMap.get(entityId);
    }

    /**
     * 获取装备
     *
     * @param szPos     上阵位置 1-6
     * @param equipType 装备类型 1:武器，2:衣服 3:戒指 4:鞋子
     */
    public EquipEntity getEntity(byte szPos, byte equipType) {
        InitEquipRepository initEquipRepository = new InitEquipRepository();
        for (EquipEntity equipEntity : fightMap.values()) {
            if (equipEntity.getPos() == szPos) {
                InitEquipEntity initEquipEntity = initEquipRepository.get(equipEntity.getsId());
                if (initEquipEntity != null && initEquipEntity.getKind() == equipType) {
                    return equipEntity;
                }
            }
        }
        return null;
    }

    /**
     * 获取上阵装备
     *
     * @param szPos 上阵位置 1-6
     */
    public List<EquipEntity> getEntityList(byte szPos) {
        List<EquipEntity> entities = new ArrayList<>();
        for (EquipEntity equipEntity : fightMap.values()) {
            if (equipEntity.getPos() == szPos) {
                entities.add(equipEntity);
            }
        }
        return entities;
    }
}
